/**
 * 测试规则: WhileStatement
 * 来源: 从 Statement 拆分
 */

/**
 * 规则测试：WhileStatement
 * 
 * 位置：Es2025Parser.ts Line 1160
 * 分类：statements
 * 编号：408
 * 
 * 规则特征：
 * - 简单规则：while ( Expression ) Statement
 * - 无Or、Option、Many分支
 * 
 * 规则语法：
 *   WhileStatement:
 *     while ( Expression ) Statement
 * 
 * 测试目标：
 * - 验证条件表达式的各种形式
 * - 验证循环体的各种语句形式
 * - 覆盖边界情况和嵌套
 * 
 * 创建时间：2025-11-01
 * 状态：✅ 已完善
 */

// ✅ 测试1：基本while循环
while (true) {
    break
}

// ✅ 测试2：条件变量
let x = 0
while (x < 10) {
    x++
}

// ✅ 测试3：复杂条件
let i = 0
while (i < 100 && x > 0) {
    i++
}

// ✅ 测试4：单行循环体
let j = 5
while (j > 0) j--

// ✅ 测试5：空循环体
let k = 0
while (false) {
}

// ✅ 测试6：嵌套while
let a = 0, b = 0
while (a < 3) {
    while (b < 2) {
        b++
    }
    a++
    b = 0
}

// ✅ 测试7：while中的break
let count = 0
while (count < 100) {
    if (count === 5) break
    count++
}

// ✅ 测试8：while中的continue
let num = 0
while (num < 10) {
    num++
    if (num === 5) continue
    console.log(num)
}

// ✅ 测试9：while中的return
function searchWhile() {
    let pos = 0
    while (pos < 100) {
        if (pos === 42) return pos
        pos++
    }
}

// ✅ 测试10：while中的块语句
let val = 0
while (val < 5) {
    {
        let temp = val * 2
        console.log(temp)
    }
    val++
}

// ✅ 测试11：while中的if语句
let status = 0
while (status < 100) {
    if (status % 2 === 0) {
        console.log('even')
    } else {
        console.log('odd')
    }
    status++
}

// ✅ 测试12：while中的for循环
let outer = 0
while (outer < 3) {
    for (let inner = 0; inner < 2; inner++) {
        console.log(outer, inner)
    }
    outer++
}

// ✅ 测试13：while中的try-catch
let error = 0
while (error < 5) {
    try {
        if (error === 3) throw new Error('test')
    } catch (e) {
    }
    error++
}

// ✅ 测试14：条件表达式变化
let data = { count: 0 }
while (data.count < 10) {
    data.count++
}

// ✅ 测试15：复杂循环场景
function processLoop() {
    let index = 0
    while (index < 1000) {
        if (index === 0) {
            console.log('start')
        } else if (index === 500) {
            console.log('middle')
        } else if (index === 999) {
            break
        }
        index++
    }
}

/* Es2025Parser.ts: WhileStatement: while ( Expression ) Statement */
